🧭 Kubernetes | February 16, 2021
카타코다 쿠버네티스 플레이그라운드
Play with Kubernetes
ADD NEW INSTANCE
버튼을 클릭하면 아래와 같은 명령어 확인 가능
1. Initializes cluster master node:
kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16
2. Initialize cluster networking:
kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
3. (Optional) Create an nginx deployment:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml
1번의 명령어로 컴포넌트들 구성 및 마스터 노드 생성
워커 노드를 하나 더 생성 후 아까 봤던 워커 노드를 조인할 수 있는 키를 그대로 워커노드에 복사/붙여넣기
kubectl get nodes -o wide
명령어로 클러스터 구성을 확인kubeadm
kubespray
VxLAN
, Pod Network
라고도 부름다양한 종류의 플로그 인이 존재
control plane(master node)
worker node
kubeadm 툴을 이용해 쿠버네티스 설치 쿠버네티스 공홈
$ su -
# swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
# systemctl stop firewalld
# systemctl disable firewalld
Installing runtime
Installing kubeadm, kubelet and kubectl
kubeadm
: 쿠버네티스 전체를 관리하고 운영해주는 명령어kubelet
: 데몬(컨테이너 조작 및 마스터와 통신할 때 사용)kubectl
: 주요 명령어apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF | tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
systemctl start kubelet
systemctl enable kubelet
kubeadm init
쿠버네티스의 컴포넌트들이 생성된다.
cat > token.txt
ctrl + d
exit
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes 관리자 계정으로 명령어 되는지 확인
이 상태까지 따라온다면, kubectl get nodes 명령어를 입력했을 때, master 노드가 NotReady
상태로 나올텐데, CNI가 미설치 된 상태라서 그렇다. 밑의 명령어를 설치한 후 잠시 기다려보면 Ready 상태로 바뀔 수 있다.
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
kubectl get nodes로 Ready 상태를 확인
워커 노드를 마스터 노드와 Join 시켜야한다.
쿠버네티스는 기본적으로 Bash 자동완성을 지원해주고 있지않다. 쿠버네티스 공식홈페이지에서 bash completion
검색 후 kubectl 치트 시트 접속
# bash-completion 패키지를 먼저 설치한 후, bash의 자동 완성을 현재 셸에 설정한다
source <(kubectl completion bash)
# 자동 완성을 bash 셸에 영구적으로 추가한다
echo "source <(kubectl completion bash)" >> ~/.bashrc